package com.itheima.d5_polymorphic.demo5;

/**
 * 电脑类
 *
 * 对于本需求，电脑没有数据可以存储，只提供功能使用，所以可以定义成标准的工具类
 * 要求：构造器私有，方法用static修饰
 */
public class Computer {
    private Computer() {

    }

    /**
     * 需求要求：电脑既可以使用键盘，也可以使用鼠标！
     * 有一个方法，既可以接收键盘对象，也可以接收鼠标对象！
     * 运用多态，方法形参声明为USB接口类型的变量
     */
    public static void useUSB(USB usb) {
        usb.insert();

        //如果在多态下想调用实现类特有功能，先判断再强转
        if (usb instanceof Mouse) {
            Mouse mouse = (Mouse) usb;
            mouse.click();
        } else if (usb instanceof Keyboard keyboard) {
            keyboard.code();
        }

        usb.close();
    }
}
